Message Format

Field types

Messages and packets can be viewed as a finite collection of fields. The list of valid field types is presented below.

Name Size Description
int8_t 1 8 bit signed integer.
uint8_t 1 8 bit unsigned integer.
int16_t 2 16 bit signed integer.
uint16_t 2 16 bit unsigned integer.
int32_t 4 32 bit signed integer.
uint32_t 4 32 bit unsigned integer.
int64_t 8 A 64 bit signed integer
fp32_t 4 32 bit single precision floating point number in IEEE 754 format.
fp64_t 8 64 bit double precision floating point number in IEEE 754 format.
rawdata n/a Variable length byte stream.
plaintext n/a Variable length ASCII character stream.
message n/a An inline message. Useful for encapsulating other messages.
message-list n/a A list of messages.

Serialization

To ensure accurate transportation some field types may require special treatment on transmission and reception. The operation of preparing a field type for transmission is called serialization, the inverse action is called deserialization. No special serialization is required for types that are not described in the table below, their values should be used as is.

Name Serialization
rawdata A sequence of type rawdata is serialized by prepending a value of type uint16_t, representing the length of the sequence, to the stream of bytes. On deserialization the prepended value is used to retrieve the correct size of data bytes. The rawdata type length is limited only by the communication protocol in use.
plaintext A sequence of type plaintext is serialized by prepending a value of type uint16_t, representing the length of the sequence, to the stream of ASCII characters. On deserialization the prepended value is used to retrieve the correct ASCII character sequence size. The plaintext type length is limited only by the communication protocol in use.
message A field of type message is serialized by prepending a value of type uint16_t, representing the identification number of the message, to the serialized message payload. The special identification number 65535 must be used when no message is present. On deserialization the prepended value is used to retrieve the correct message identification number. The message type length is limited only by the communication protocol in use.
message-list A field of type message-list is serialized by prepending a value of type uint16_t, representing the number of messages in the list, to the serialized message payload. On deserialization the prepended value is used to retrieve the correct number of messages

Flags

Name Abbreviation Description
Periodic periodic -
Deprecated deprecated -

Reference of Units

The following table lists the units used in the subsequent chapters.

Abbreviation Name Description
A Ampere -
bit Bit -
bps Bits per second -
byte Byte -
g Gravity acceleration -
cm Centimeter -
cm/s Centimeter per second -
dm Decimeter -
dB Decibel -
dB/m Decibel per meter -
dBHz Decibel hertz -
dBm Decibel milliwatts. -
° Degree -
°C Degree Celsius -
G Gauss -
hPa Hectopascal -
Hz Hertz -
kg/m/m/m Kilogram per cubic metre -
MiB Mebibyte -
m Meter -
m/s Meter per second -
m/s/s Meter per square second -
Mbps Megabits per second -
ms Millisecond -
µs Microsecond -
ns Nanosecond -
px/m² Pixels per square meter -
m²/s Square meters per second -
S/m Siemens per meter -
kg Kilogram -
Nm Newton meter -
NTU Nephelometric Turbidity Unit -
N Newton -
Pa Pascal -
% Percent -
PPM Parts per million -
PPB Parts per billion -
PSU Pratical Salinity Unit -
1/m Inverse Meter -
px Pixel -
µg/L Microgram per liter -
µM Micromolar -
rad Radian -
rad/s Radian per second -
rpm Revolutions per minute -
rpm/s Revolutions per minute per second -
s Second -
V Volt -
Enumerated Enumeration of integer values -
List Comma separated list of values -
Bitfield Bit field -
TupleList List of key/value tuples This unit is a list of label/value tuples and is only valid in plaintext fields. The label and value portions of a tuple are separated using the equal sign (=) and tuples are separated using the semicolon character (;). These delimiting characters must not be used elsewhere. Leading and trailing semicolons must be removed. Examples: “label1=12;label2=3” or “label1=12” or “label1=test_2”.

Reference of Global Enumerations

Enum Boolean Value

No description

  • Abbreviation: Boolean
  • Prefix: BOOL
Value Name Abbreviation Description
0 False FALSE -
1 True TRUE -

Enum Controlled Mode

No description

  • Abbreviation: ControlledMode
  • Prefix: CTLMD
Value Name Abbreviation Description
0 Relinquish / Handoff Control RELINQUISH_HANDOFF_CTL -
1 Request Control REQUEST_CTL -
2 Override Control OVERRIDE_CTL -

Enum Speed Units

No description

  • Abbreviation: SpeedUnits
  • Prefix: SUNITS
Value Name Abbreviation Description
0 Meters per second METERS_PS -
1 RPM RPM -
2 Percentage PERCENTAGE -

Enum System Type

No description

  • Abbreviation: SystemType
  • Prefix: SYSTEMTYPE
Value Name Abbreviation Description
0 CCU CCU -
1 Human-portable Sensor HUMANSENSOR -
2 UUV UUV -
3 USV USV -
4 UAV UAV -
5 UGV UGV -
6 Static sensor STATICSENSOR -
7 Mobile sensor MOBILESENSOR -
8 Wireless Sensor Network WSN -

Enum Z Units

No description

  • Abbreviation: ZUnits
  • Prefix: Z
Value Name Abbreviation Description
0 None NONE -
1 Depth DEPTH -
2 Altitude ALTITUDE -
3 Height HEIGHT -

Enum RSSI Units

No description

  • Abbreviation: RSSIUnits
  • Prefix: RSSIUNITS
Value Name Abbreviation Description
0 Decibel dB -
1 Percentage PERCENTAGE -

Enum UAV Type

No description

  • Abbreviation: UAVType
  • Prefix: UAVTYPE
Value Name Abbreviation Description
0 Fixed-Wing FIXEDWING -
1 Copter COPTER -
2 Vtol VTOL -

Enum Sensor Type

No description

  • Abbreviation: SensorType
  • Prefix: SENSORTYPE
Value Name Abbreviation Description
1 Multibeam Sonar MULTIBEAM -
2 Sidescan Sonar SIDESCAN -
3 Video Camera CAMERA -
4 Magnetometer MAGNETOMETER -

Reference of Global Bitfields

Bitfield Control Loops Mask

No description

  • Abbreviation: CLoopsMask
  • Prefix: CL
Value Name Abbreviation Description
0x00000000 None NONE -
0x00000001 Path Control PATH -
0x00000002 Teleoperation Control TELEOPERATION -
0x00000004 Altitude Control ALTITUDE -
0x00000008 Depth Control DEPTH -
0x00000010 Roll Control ROLL -
0x00000020 Pitch Control PITCH -
0x00000040 Yaw Control YAW -
0x00000080 Speed Control SPEED -
0x00000100 Yaw Rate Control YAW_RATE -
0x00000200 Vertical Rate Control VERTICAL_RATE -
0x00000400 Torque Control TORQUE -
0x00000800 Force Control FORCE -
0x00001000 Velocity Control VELOCITY -
0x00002000 Throttle Control THROTTLE -
0x40000000 Unspecified External Control EXTERNAL -
0x80000000 Non-overridable control NO_OVERRIDE -
0xFFFFFFFF All ALL -

Bitfield Operational Limits Mask

No description

  • Abbreviation: OpLimitsMask
  • Prefix: OPL
Value Name Abbreviation Description
0x01 Maximum Depth MAX_DEPTH -
0x02 Minimum Altitude MIN_ALT -
0x04 Maximum Altitude MAX_ALT -
0x08 Minimum Speed MIN_SPEED -
0x10 Maximum Speed MAX_SPEED -
0x20 Maximum Vertical Rate MAX_VRATE -
0x40 Operation Area AREA -